From b74959a605f89d1c515db2b42181b27cc76ce8e6 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 22 Nov 2017 17:40:39 +0100 Subject: [PATCH] broadway: Add clip node --- gdk/broadway/broadway-protocol.h | 1 + gdk/broadway/broadway.js | 11 +++++++++++ gdk/broadway/broadwayd.c | 4 ++++ gsk/gskbroadwayrenderer.c | 9 +++++++++ 4 files changed, 25 insertions(+) diff --git a/gdk/broadway/broadway-protocol.h b/gdk/broadway/broadway-protocol.h index 5dd5ba354e..7e8a37c59e 100644 --- a/gdk/broadway/broadway-protocol.h +++ b/gdk/broadway/broadway-protocol.h @@ -19,6 +19,7 @@ typedef enum { /* Sync changes with broadway.js */ BROADWAY_NODE_LINEAR_GRADIENT = 7, BROADWAY_NODE_SHADOW = 8, BROADWAY_NODE_OPACITY = 9, + BROADWAY_NODE_CLIP = 10, } BroadwayNodeType; typedef enum { diff --git a/gdk/broadway/broadway.js b/gdk/broadway/broadway.js index 8f056c3a14..9f9ca2357f 100644 --- a/gdk/broadway/broadway.js +++ b/gdk/broadway/broadway.js @@ -628,6 +628,17 @@ SwapNodes.prototype.handle_node = function(parent, offset_x, offset_y) } break; + case 10: // CLIP + { + var rect = this.decode_rect(); + var div = document.createElement('div'); + div.style["position"] = "absolute"; + set_rect_style(div, rect, offset_x, offset_y); + div.style["overflow"] = "hidden"; + parent.appendChild(div); + this.handle_node(div, rect.x, rect.y); + } + break; default: alert("Unexpected node type " + type); diff --git a/gdk/broadway/broadwayd.c b/gdk/broadway/broadwayd.c index 7deb114272..50d71f521d 100644 --- a/gdk/broadway/broadwayd.c +++ b/gdk/broadway/broadwayd.c @@ -259,6 +259,10 @@ rewrite_node_textures (BroadwayClient *client, pos += NODE_SIZE_RRECT; pos = rewrite_node_textures (client, len, data, pos); break; + case BROADWAY_NODE_CLIP: + pos += NODE_SIZE_RECT; + pos = rewrite_node_textures (client, len, data, pos); + break; case BROADWAY_NODE_LINEAR_GRADIENT: pos += NODE_SIZE_RECT + 2 * NODE_SIZE_POINT; n_stops = data[pos++]; diff --git a/gsk/gskbroadwayrenderer.c b/gsk/gskbroadwayrenderer.c index f4fe8a998b..0838a7a69a 100644 --- a/gsk/gskbroadwayrenderer.c +++ b/gsk/gskbroadwayrenderer.c @@ -582,6 +582,15 @@ gsk_broadway_renderer_add_node (GskRenderer *self, } return; + case GSK_CLIP_NODE: + { + add_uint32 (nodes, BROADWAY_NODE_CLIP); + add_rect (nodes, gsk_clip_node_peek_clip (node)); + gsk_broadway_renderer_add_node (self, nodes, node_textures, + gsk_clip_node_get_child (node)); + } + return; + case GSK_COLOR_MATRIX_NODE: case GSK_TEXT_NODE: default: -- 2.30.2